home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / AIncludes / MachineExceptions.a < prev    next >
Encoding:
Text File  |  1997-08-12  |  6.3 KB  |  196 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        MachineExceptions.a
  3. ;
  4. ;    Contains:    Processor Exception Handling Interfaces.
  5. ;
  6. ;    Version:    Technology:    System 7.5
  7. ;                Release:    Universal Interfaces 3.0.1
  8. ;
  9. ;    Copyright:    © 1993-1997 by Apple Computer, Inc., all rights reserved.
  10. ;
  11. ;    Bugs?:        Please include the the file and version information (from above) with
  12. ;                the problem description.  Developers belonging to one of the Apple
  13. ;                developer programs can submit bug reports to:
  14. ;
  15. ;                    devsupport@apple.com
  16. ;
  17. ;
  18.     IF &TYPE('__MACHINEEXCEPTIONS__') = 'UNDEFINED' THEN
  19. __MACHINEEXCEPTIONS__ SET 1
  20.  
  21.     IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
  22.     include 'Types.a'
  23.     ENDIF
  24.  
  25. ;  Some basic declarations used throughout the kernel 
  26.  
  27.  
  28. ;  Machine Dependent types for PowerPC: 
  29. MachineInformationPowerPC RECORD 0
  30. CTR                         ds        UnsignedWide    ; offset: $0 (0)
  31. LR                         ds        UnsignedWide    ; offset: $8 (8)
  32. PC                         ds        UnsignedWide    ; offset: $10 (16)
  33. CR                         ds.l    1                ; offset: $18 (24)
  34. XER                         ds.l    1                ; offset: $1C (28)
  35. MSR                         ds.l    1                ; offset: $20 (32)
  36. MQ                         ds.l    1                ; offset: $24 (36)
  37. ExceptKind                 ds.l    1                ; offset: $28 (40)
  38. DSISR                     ds.l    1                ; offset: $2C (44)
  39. DAR                         ds        UnsignedWide    ; offset: $30 (48)
  40. Reserved                 ds        UnsignedWide    ; offset: $38 (56)
  41. sizeof                     EQU *                    ; size:   $40 (64)
  42.                         ENDR
  43. RegisterInformationPowerPC RECORD 0
  44. R0                         ds        UnsignedWide    ; offset: $0 (0)
  45. R1                         ds        UnsignedWide    ; offset: $8 (8)
  46. R2                         ds        UnsignedWide    ; offset: $10 (16)
  47. R3                         ds        UnsignedWide    ; offset: $18 (24)
  48. R4                         ds        UnsignedWide    ; offset: $20 (32)
  49. R5                         ds        UnsignedWide    ; offset: $28 (40)
  50. R6                         ds        UnsignedWide    ; offset: $30 (48)
  51. R7                         ds        UnsignedWide    ; offset: $38 (56)
  52. R8                         ds        UnsignedWide    ; offset: $40 (64)
  53. R9                         ds        UnsignedWide    ; offset: $48 (72)
  54. R10                         ds        UnsignedWide    ; offset: $50 (80)
  55. R11                         ds        UnsignedWide    ; offset: $58 (88)
  56. R12                         ds        UnsignedWide    ; offset: $60 (96)
  57. R13                         ds        UnsignedWide    ; offset: $68 (104)
  58. R14                         ds        UnsignedWide    ; offset: $70 (112)
  59. R15                         ds        UnsignedWide    ; offset: $78 (120)
  60. R16                         ds        UnsignedWide    ; offset: $80 (128)
  61. R17                         ds        UnsignedWide    ; offset: $88 (136)
  62. R18                         ds        UnsignedWide    ; offset: $90 (144)
  63. R19                         ds        UnsignedWide    ; offset: $98 (152)
  64. R20                         ds        UnsignedWide    ; offset: $A0 (160)
  65. R21                         ds        UnsignedWide    ; offset: $A8 (168)
  66. R22                         ds        UnsignedWide    ; offset: $B0 (176)
  67. R23                         ds        UnsignedWide    ; offset: $B8 (184)
  68. R24                         ds        UnsignedWide    ; offset: $C0 (192)
  69. R25                         ds        UnsignedWide    ; offset: $C8 (200)
  70. R26                         ds        UnsignedWide    ; offset: $D0 (208)
  71. R27                         ds        UnsignedWide    ; offset: $D8 (216)
  72. R28                         ds        UnsignedWide    ; offset: $E0 (224)
  73. R29                         ds        UnsignedWide    ; offset: $E8 (232)
  74. R30                         ds        UnsignedWide    ; offset: $F0 (240)
  75. R31                         ds        UnsignedWide    ; offset: $F8 (248)
  76. sizeof                     EQU *                    ; size:   $100 (256)
  77.                         ENDR
  78. FPUInformationPowerPC    RECORD 0
  79. Registers                 ds.b    32 * UnsignedWide.sizeof ; offset: $0 (0)
  80. FPSCR                     ds.l    1                ; offset: $100 (256)
  81. Reserved                 ds.l    1                ; offset: $104 (260)
  82. sizeof                     EQU *                    ; size:   $108 (264)
  83.                         ENDR
  84.  
  85. ;  Exception related declarations 
  86.  
  87. kWriteReference                    EQU        0
  88. kReadReference                    EQU        1
  89. kFetchReference                    EQU        2
  90. writeReference                    EQU        0                    ; Obsolete name
  91. readReference                    EQU        1                    ; Obsolete name
  92. fetchReference                    EQU        2                    ; Obsolete name
  93. ; typedef unsigned long                 MemoryReferenceKind
  94.  
  95. MemoryExceptionInformation RECORD 0
  96. theArea                     ds.l    1                ; offset: $0 (0)
  97. theAddress                 ds.l    1                ; offset: $4 (4)
  98. theError                 ds.l    1                ; offset: $8 (8)
  99. theReference             ds.l    1                ; offset: $C (12)
  100. sizeof                     EQU *                    ; size:   $10 (16)
  101.                         ENDR
  102.  
  103. kUnknownException                EQU        0
  104. kIllegalInstructionException    EQU        1
  105. kTrapException                    EQU        2
  106. kAccessException                EQU        3
  107. kUnmappedMemoryException        EQU        4
  108. kExcludedMemoryException        EQU        5
  109. kReadOnlyMemoryException        EQU        6
  110. kUnresolvablePageFaultException    EQU        7
  111. kPrivilegeViolationException    EQU        8
  112. kTraceException                    EQU        9
  113. kInstructionBreakpointException    EQU        10
  114. kDataBreakpointException        EQU        11
  115. kIntegerException                EQU        12
  116. kFloatingPointException            EQU        13
  117. kStackOverflowException            EQU        14
  118. kTaskTerminationException        EQU        15
  119. kTaskCreationException            EQU        16
  120.     IF OLDROUTINENAMES THEN
  121.  
  122. unknownException                EQU        0                    ; Obsolete name
  123. illegalInstructionException        EQU        1                    ; Obsolete name
  124. trapException                    EQU        2                    ; Obsolete name
  125. accessException                    EQU        3                    ; Obsolete name
  126. unmappedMemoryException            EQU        4                    ; Obsolete name
  127. excludedMemoryException            EQU        5                    ; Obsolete name
  128. readOnlyMemoryException            EQU        6                    ; Obsolete name
  129. unresolvablePageFaultException    EQU        7                    ; Obsolete name
  130. privilegeViolationException        EQU        8                    ; Obsolete name
  131. traceException                    EQU        9                    ; Obsolete name
  132. instructionBreakpointException    EQU        10                    ; Obsolete name
  133. dataBreakpointException            EQU        11                    ; Obsolete name
  134. integerException                EQU        12                    ; Obsolete name
  135. floatingPointException            EQU        13                    ; Obsolete name
  136. stackOverflowException            EQU        14                    ; Obsolete name
  137. terminationException            EQU        15                    ; Obsolete name
  138. kTerminationException            EQU        15                    ; Obsolete name
  139.     ENDIF    ; OLDROUTINENAMES
  140. ; typedef unsigned long                 ExceptionKind
  141.  
  142. ExceptionInfo            RECORD 0
  143. memoryInfo                 ds.l    1                ; offset: $0 (0)
  144. sizeof                     EQU *                    ; size:   $4 (4)
  145.                         ENDR
  146. ExceptionInformationPowerPC RECORD 0
  147. theKind                     ds.l    1                ; offset: $0 (0)
  148. machineState             ds.l    1                ; offset: $4 (4)
  149. registerImage             ds.l    1                ; offset: $8 (8)
  150. FPUImage                 ds.l    1                ; offset: $C (12)
  151. info                     ds        ExceptionInfo    ; offset: $10 (16)
  152. sizeof                     EQU *                    ; size:   $14 (20)
  153.                         ENDR
  154. ExceptionInformation    RECORD 0
  155. f                         ds        ExceptionInformationPowerPC
  156. sizeof                     EQU *                    ; size:   $14 (20)
  157.                         ENDR
  158.  
  159.  
  160. MachineInformation        RECORD 0
  161. f                         ds        MachineInformationPowerPC
  162. sizeof                     EQU *                    ; size:   $40 (64)
  163.                         ENDR
  164.  
  165.  
  166. RegisterInformation        RECORD 0
  167. f                         ds        RegisterInformationPowerPC
  168. sizeof                     EQU *                    ; size:   $100 (256)
  169.                         ENDR
  170.  
  171.  
  172. FPUInformation            RECORD 0
  173. f                         ds        FPUInformationPowerPC
  174. sizeof                     EQU *                    ; size:   $108 (264)
  175.                         ENDR
  176.  
  177.  
  178.  
  179. ;  
  180. ;    Note:    An ExceptionHandler is NOT a UniversalProcPtr.
  181. ;            It must be a PowerPC function pointer with NO routine descriptor. 
  182. ;
  183.  
  184. ;  Routine for installing per-process exception handlers 
  185. ;
  186. ; pascal ExceptionHandler InstallExceptionHandler(ExceptionHandler theHandler)
  187. ;
  188.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  189.         IMPORT_CFM_FUNCTION InstallExceptionHandler
  190.     ENDIF
  191.  
  192.  
  193.  
  194.     ENDIF ; __MACHINEEXCEPTIONS__ 
  195.  
  196.